from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
import jieba

def cut_word(text):
    """
    使用 jibba 进行中文分词
    :param text:
    :return:
    """
    a = " ".join(list(jieba.cut(text)))
    return a

def ch_count_demo():
    """
    中文文本特征提取
    :return:
    """
    data = ["一种还是一种今天很残酷，明天更残酷，后天很美好，但绝对大部分是死在明天晚上，所以每个人不要放弃今天。",
            "我们看到的从很远星系来的光是在几百万年之前发出的，这样当我们看到宇宙时，我们是在看它的过去。",
            "如果只用一种方式了解某样事物，你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"]
    # 1.将中文文本进行分词
    data_new = []
    for sent in data:
        data_new.append(cut_word(sent))
    # 2.实例化一个转换器类
    transfer = CountVectorizer()
    # 3.调用 fit_transform
    data_final = transfer.fit_transform(data_new)
    print("data_final 的类型：" , type(data_final))
    print("文本特征抽取的结果：\n", data_final.toarray())
    print("特征名字：\n", transfer.get_feature_names_out())

    return None


def tfidf_demo():
    """
        中文文本特征提取
        :return:
        """
    data = ["一种还是一种今天很残酷，明天更残酷，后天很美好，但绝对大部分是死在明天晚上，所以每个人不要放弃今天。",
            "我们看到的从很远星系来的光是在几百万年之前发出的，这样当我们看到宇宙时，我们是在看它的过去。",
            "如果只用一种方式了解某样事物，你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"]
    # 1.将中文文本进行分词
    data_new = []
    for sent in data:
        data_new.append(cut_word(sent))
    # 2.实例化一个转换器类
    transfer = TfidfVectorizer()
    # 3.调用 fit_transform
    data_final = transfer.fit_transform(data_new)
    print("data_final 的类型：", type(data_final))
    print("文本特征抽取的结果：\n", data_final.toarray())
    print("特征名字：\n", transfer.get_feature_names_out())

    return None

if __name__ == "__main__":
    # 代码4：中文文本特征抽取
    ch_count_demo()
    # 代码5：中文文本特征抽取
    tfidf_demo()